Option Explicit

'DECLARACION DE CONSTANTES PUBLICAS
Public Const APPLICATION_NAME = "kuka_JT_Check"  ' Name of the macro
Public Const APPLICATION_VERSION = "1.1"        ' Version of the macro
Public Const APPLICATION_DATE = "06/06/2016"    ' Date of the macro
Public Const CATIA_VERSION = "v5"               'Version de CATIA recomendada
Public Const CATIA_RELEASE = "R19"              'Release de CATIA recomendada
Public Const CATIA_SP = "SP4"                   'Service Pack Recomendado
Public Const WINDOWS_VERSION = "2000"           'Version de CATIA recomendada
Public Const WINDOWS_SP = "SP4"                 'Version de CATIA recomendada

Public Const strG_DocFileName As String = "Manuel_Macro_JT_Check.pdf"
Public objCATIAV5FileSystem         As INFITF.FileSystem
Public objCATIAV5Selection          As INFITF.Selection
Public objCATIAV5CurrentDoc         As INFITF.Document

Public Const LRD_FILENAME = "SymbolicLinks.CATSettings"     'Nombre del archivo de el setting del LoadReferencedDocuments

Public Const DEBUG_MODE = False                  'Flag de debug mode
Public Const ADVDEBUG_MODE = False               'Flag de debug avanzado
Public Const MSDOS_CATALOGOS = True

'DECLARACION DE VARIABLES PUBLICAS
Public sLanguage As String          'Idioma del programa
Public sPrograma As String          'Programa para el que va a funcionar Chequtil
Public bInforme As Boolean          'Flag de si se genera informe o no
Public bAbortar As Boolean          'Flag de abortado por el usuario
Public bError As Boolean            'Flag de error del sistema
Public sTipoDoc As String           'Tipo de documento que se va a procesar
Public oClaseDocumentos As cDocumentos   'Coleccion de documentos que se van a procesar
Public fs As Object                 'Objeto FileSystem

Public aCuestionario() As String            'Tabla con los resultados del cuestionario
Public aClaseChequeos() As cTipoChequeo      'Tabla con los chequeos disponibles, tanto para DRAWING como para PRODUCT
'Public aClaseDLNames() As cDLName         'Tabla con las DLNames utilizadas por el sistema, en el archivo DLNames.CATSettings


Sub Inicializar_FileSystem()
'*************************************************
'*  SUB que inicializa el FileSystem de la macro
'*
'*  Escrita por: Gervid 07-abr-2004
'*  Revisada por:Gervid 07-abr-2004
'*************************************************
    
    On Error GoTo Depurar_Error
    
    Dim bOK As Boolean
    
    'Asigna el FileSystem
    bOK = True
    On Error GoTo Error_FS
    Set Principal.fs = CreateObject("Scripting.FilesystemObject")
    
    'Si ha habido error, asigna el de CATIA (menos seguro)
    If bOK Then
        
    Else
        Set Principal.fs = CATIA.FileSystem
    End If
    
    On Error GoTo Depurar_Error

Exit Sub

Error_FS:
    bOK = False
    Err.Clear
    Resume Next

Depurar_Error:
    Control_Error.Depurar_Error Err.Number, Err.Description, "Principal", "Inicializar_FileSystem"
    Err.Clear
    
    If Principal.DEBUG_MODE Then
        Stop
    End If
    Resume Next

End Sub

Sub Inicializar_CATIA()
'*************************************************
'*  SUB que inicializa los datos de CATIA
'*  en la Form Principal
'*
'*  Escrita por: Gervid 27-ene-2004
'*  Revisada por:Gervid 27-ene-2004
'*************************************************

    On Error GoTo Depurar_Error
    
    'Version de CATIA y R
    FormPrincipal.labCATIAVersion.Caption = "v" & CATIA.SystemConfiguration.Version & " R" & CATIA.SystemConfiguration.Release
    
    'Service Pack
    FormPrincipal.labCATIAVersion.Caption = FormPrincipal.labCATIAVersion.Caption & " SP" & CATIA.SystemConfiguration.ServicePack
    
    'Si no coinciden version ni Sp, muestra el error
    FormPrincipal.labCATIAVersion.ForeColor = &HC00000
    FormPrincipal.labCATIAVersion.Tag = ""
    
    'Version de Windows
    FormPrincipal.labWindowsVersion.Caption = C_API.GetWinVersionEx(True, , , False)
    
    'Service Pack
    FormPrincipal.labWindowsVersion.Caption = FormPrincipal.labWindowsVersion.Caption & " SP" & Trim(Replace(C_API.GetWinVersionEx(False), "Service Pack", ""))
    
    'Si no coinciden version ni Sp, muestra el error
    FormPrincipal.labWindowsVersion.ForeColor = &HC00000
    FormPrincipal.labWindowsVersion.Tag = ""
        
    'Tipo de Documento
    FormPrincipal.labDocTipo = C_Idioma.FormPrincipal_Etiqueta(15, sLanguage)
    FormPrincipal.labTipo = Principal.sTipoDoc

Exit Sub
Depurar_Error:
    Control_Error.Depurar_Error Err.Number, Err.Description, "Principal", "Inicializar_CATIA"
    Err.Clear
    If Principal.DEBUG_MODE Then
        Stop
    End If
    Resume Next

End Sub


Private Function Comprobar_LoadReferencedDocuments() As Integer
'*************************************************
'*  SUB que inicializa la tabla de chequeos
'*
'*  Escrita por: Gervid 04-may-2004
'*  Revisada por: Gervid 04-may-2004
'*************************************************
    Const TEXTO_LRD = "LoadLinkStatus"
    
    Dim oArchivo As Object
    Dim sUserSettingsPath As String
    Dim sRefSettingsPath As String
    Dim sChar As String
    Dim sTexto As String
    Dim iCont As Integer                    'Contador
    Dim bEncontrado As Boolean
    
    On Error GoTo Depurar_Error
    
    'Asignaciones
    sRefSettingsPath = CATIA.SystemService.Environ("CATReferenceSettingPath")
    sUserSettingsPath = CATIA.SystemService.Environ("CATUserSettingPath")
    
    'Busca el archivo SymbolicLinks.CATSettings
    If sRefSettingsPath <> "" Then
        If Principal.fs.FileExists(C_Aux.Path_Correccion(sRefSettingsPath) & LRD_FILENAME) Then
            Set oArchivo = Principal.fs.OpenTextFile(C_Aux.Path_Correccion(sRefSettingsPath) & LRD_FILENAME, 1)
        End If
    End If
        
    If (sUserSettingsPath <> "") Then 'And (oArchivo Is Nothing) Then
        If Principal.fs.FileExists(C_Aux.Path_Correccion(sUserSettingsPath) & LRD_FILENAME) Then
            Set oArchivo = Principal.fs.OpenTextFile(C_Aux.Path_Correccion(sUserSettingsPath) & LRD_FILENAME, 1)
        End If
    End If
    
    If oArchivo Is Nothing Then
        Comprobar_LoadReferencedDocuments = 0
    Else
        'Lee todo el contenido del archivo
        sTexto = ""
        iCont = 0
        'Busca la cadena LoadLinkStatus
        bEncontrado = False
        Do
            sChar = oArchivo.Read(1)
            sTexto = sTexto & sChar
            iCont = iCont + 1
            If Right(sTexto, Len(TEXTO_LRD)) = TEXTO_LRD Then
                bEncontrado = True
            End If
            
        Loop Until (bEncontrado Or oArchivo.AtEndOfStream)
        
        If bEncontrado Then
        
            If ADVDEBUG_MODE Then
                MsgBox "Linea Load Referenced Documents encontrada"
            End If
        
            bEncontrado = False
            Do
                sChar = oArchivo.Read(1)
                sTexto = sTexto & sChar
                iCont = iCont + 1
                If (Asc(sChar) = 63) Then
                    bEncontrado = True
                End If
                
            Loop Until (bEncontrado Or oArchivo.AtEndOfStream)
            
            If bEncontrado Then
                
                sChar = oArchivo.Read(3)
                sTexto = sTexto & Left(sChar, 2)
                sChar = Right(sChar, 1)
                If Asc(sChar) = 1 Then
                    Comprobar_LoadReferencedDocuments = 0
                Else
                    Comprobar_LoadReferencedDocuments = 1
                    'Experimental, escribir el tooloptions
                    If False Then '(MsgBox("Desea activar la opcion LRD?", vbYesNo + vbQuestion) = vbYes) Then
                        sTexto = sTexto & Chr(1)
                        Do
                            sChar = oArchivo.Read(1)
                            sTexto = sTexto & sChar
                        Loop Until oArchivo.AtEndOfStream
                        
                        oArchivo.Close
                        Set oArchivo = Nothing
                        
                        If sRefSettingsPath <> "" Then
                            Principal.fs.DeleteFile C_Aux.Path_Correccion(sRefSettingsPath) & LRD_FILENAME, True
                        End If
                        If sUserSettingsPath <> "" Then
                            Principal.fs.DeleteFile C_Aux.Path_Correccion(sUserSettingsPath) & LRD_FILENAME, True
                        End If
                        
                        
                        If sRefSettingsPath <> "" Then
                            Set oArchivo = Principal.fs.createtextfile(C_Aux.Path_Correccion(sRefSettingsPath) & LRD_FILENAME, True)
                        End If
                        If (sUserSettingsPath <> "") And (oArchivo Is Nothing) Then
                            Set oArchivo = Principal.fs.createtextfile(C_Aux.Path_Correccion(sUserSettingsPath) & LRD_FILENAME, True)
                        End If
                        
                        If (oArchivo Is Nothing) Then
                            MsgBox "Je n'ai pas pu le faire :(("
                            'MsgBox "No he podido hacerlo :(("
                        Else
                            MsgBox "Regarder dans Tool Options ;))"
                            'MsgBox "Mira el Tool Options ;))"
                            oArchivo.Write (sTexto)
                            
                        End If
                        
                    End If
                End If
                
            Else
                Comprobar_LoadReferencedDocuments = 0
            End If
        
        Else
            If ADVDEBUG_MODE Then
                MsgBox "Linea Load Referenced Documents NO ENCONTRADA"
            End If
            Comprobar_LoadReferencedDocuments = 0
        End If
        
    End If
    
    'Cierra el archivo si existe
    If Not oArchivo Is Nothing Then
        oArchivo.Close
    End If

Exit Function

Depurar_Error:
    Control_Error.Depurar_Error Err.Number, Err.Description, "Principal", "Comprobar_LoadReferencedDocuments"
    Err.Clear
    If Principal.DEBUG_MODE Then
        Stop
    End If
    Resume Next

End Function

'*************************************************
'*  SUB initializes the checks table.
'*
'*  Adaptation of the next subroutine for AIRBUS FR
'*  8/02/2007
'*************************************************
Private Sub Init_Checks_Table(iChecks() As cTipoChequeo)
    Dim n As Integer, nbChecks As Integer

    nbChecks = 20
    
    'Redim the collection
    ReDim iChecks(nbChecks)
    For n = 1 To nbChecks
        Set iChecks(n) = New cTipoChequeo
    Next 'n

    '*** Checks for all
    ' System information
    iChecks(1).Nombre = "CATIA_Version"
    iChecks(1).Clase = "Sistema"

    ' Commun checks
    iChecks(2).Nombre = "Nombre"
    iChecks(2).Clase = "Comunes"
    iChecks(3).Nombre = "Size"
    iChecks(3).Clase = "Comunes"
    iChecks(4).Nombre = "Units"
    iChecks(4).Clase = "Comunes"
    iChecks(5).Nombre = "FileName"
    iChecks(5).Clase = "Comunes"
    iChecks(6).Nombre = "InstanceName"
    iChecks(6).Clase = "Comunes"
    
    
    '*** Specific checks for CATDrawing
    ' Tool Sheet
    iChecks(7).Nombre = "Una_Hoja_Util"
    iChecks(7).Clase = "Hoja de Util"
    iChecks(8).Nombre = "SalvadoEnWV"
    iChecks(8).Clase = "Hoja de Util"
    
    ' Empty elements
    iChecks(9).Nombre = "No_Hojas_Vacias"
    iChecks(9).Clase = "Elementos vacios"
    iChecks(10).Nombre = "No_Vistas_Vacias"
    iChecks(10).Clase = "Elementos vacios"
    iChecks(11).Nombre = "No_Detalles_Vacios"
    iChecks(11).Clase = "Elementos vacios"
    
    ' Views
    iChecks(12).Nombre = "Detalles_En_Detalles"
    iChecks(12).Clase = "Vistas"
    iChecks(13).Nombre = "DetallesNoUsados"
    iChecks(13).Clase = "Vistas"
    iChecks(14).Nombre = "Locked_Views"
    iChecks(14).Clase = "Vistas"
    iChecks(15).Nombre = "Fake_Dimensions"
    iChecks(15).Clase = "Vistas"
   
   
   '*** Specific checks for CATProduct
   ' Structure
    iChecks(16).Nombre = "Constraints"
    iChecks(16).Clase = "Estructura"
    
    'Links
    iChecks(17).Nombre = "Links_Rotos"
    iChecks(17).Clase = "Links"
    
    
    '*** Specific checks for CATPart
    iChecks(18).Nombre = "CATPart_Update"
    iChecks(18).Clase = "CATPart"
    iChecks(19).Nombre = "CATPart_UnBody"
    iChecks(19).Clase = "CATPart"
    iChecks(20).Nombre = "CATPart_noHybridBody"
    iChecks(20).Clase = "CATPart"
   
    
   
   
    
    


End Sub


Private Sub Inicializar_Tabla_Chequeos(aChequeos() As cTipoChequeo)
'*************************************************
'*  SUB que inicializa la tabla de chequeos
'*
'*  Escrita por: La macro que escribe macros 07 de abril de 2006
'*  Revisada por: No hace falta :P           07 de abril de 2006
'*************************************************


    Dim n As Integer, nbCkecks As Integer
    
    nbCkecks = 122 ' 118

    'Redimensiona la matriz
    ReDim aChequeos(nbCkecks + 1)
    For n = 1 To nbCkecks
        Set aChequeos(n) = New cTipoChequeo
    Next 'n

    'Chequeos para TODOS
        'Sistema
    aChequeos(1).Nombre = "CATIA_Version"
    aChequeos(1).Clase = "Sistema"
    aChequeos(2).Nombre = "ROA_Botes"
    aChequeos(2).Clase = "Sistema"
    aChequeos(3).Nombre = "Modelos_Inicio"
    aChequeos(3).Clase = "Sistema"
    aChequeos(4).Nombre = "Fecha_Catalogos"
    aChequeos(4).Clase = "Sistema"
    aChequeos(5).Nombre = "DLNames"
    aChequeos(5).Clase = "Sistema"
    aChequeos(6).Nombre = "Normativas"
    aChequeos(6).Clase = "Sistema"

        'Comunes
    aChequeos(21).Nombre = "Nombre"
    aChequeos(21).Clase = "Comunes"
    aChequeos(22).Nombre = "Size"
    aChequeos(22).Clase = "Comunes"
    aChequeos(23).Nombre = "PathROA"
    aChequeos(23).Clase = "Comunes"
    aChequeos(24).Nombre = "CATDua"
    aChequeos(24).Clase = "Comunes"
        ' Adds for french version
    aChequeos(31).Nombre = "Units"
    aChequeos(31).Clase = "Comunes"
    aChequeos(32).Nombre = "FileName"
    aChequeos(32).Clase = "Comunes"
    aChequeos(33).Nombre = "InstanceName"
    aChequeos(33).Clase = "Comunes"



    'Chequeos para DRAWING
        'Hoja de Util
    aChequeos(51).Nombre = "Una_Hoja_Util"
    aChequeos(51).Clase = "Hoja de Util"
    aChequeos(52).Nombre = "Nombre_Hoja_Util"
    aChequeos(52).Clase = "Hoja de Util"
    aChequeos(64).Nombre = "SalvadoEnWV"
    aChequeos(64).Clase = "Hoja de Util"
    aChequeos(65).Nombre = "Coherencia"
    aChequeos(65).Clase = "Hoja de Util"
    aChequeos(69).Nombre = "Numero_Hojas"
    aChequeos(69).Clase = "Hoja de Util"

        'Formato
    aChequeos(53).Nombre = "Coordinacion_Formato_PageSetup"
    aChequeos(53).Clase = "Formato"
    aChequeos(54).Nombre = "Formato_NoExplotado"
    aChequeos(54).Clase = "Formato"

        'Elementos vacios
    aChequeos(55).Nombre = "No_Hojas_Vacias"
    aChequeos(55).Clase = "Elementos vacios"
    aChequeos(56).Nombre = "No_Vistas_Vacias"
    aChequeos(56).Clase = "Elementos vacios"
    aChequeos(57).Nombre = "No_Detalles_Vacios"
    aChequeos(57).Clase = "Elementos vacios"

        'Elementos necesarios
    aChequeos(58).Nombre = "Existe_LDP"
    aChequeos(58).Clase = "Elementos necesarios"
    aChequeos(59).Nombre = "Existe_TablaZonas"
    aChequeos(59).Clase = "Elementos necesarios"
    aChequeos(60).Nombre = "Existe_UIS"
    aChequeos(60).Clase = "Elementos necesarios"

        'Vistas
    aChequeos(61).Nombre = "Frame_Ejes_Ocultos"
    aChequeos(61).Clase = "Vistas"
    aChequeos(62).Nombre = "Links"
    aChequeos(62).Clase = "Vistas"
    aChequeos(63).Nombre = "Detalles_En_Detalles"
    aChequeos(63).Clase = "Vistas"
    aChequeos(66).Nombre = "DetallesNoUsados"
    aChequeos(66).Clase = "Vistas"
    aChequeos(67).Nombre = "Vistas_Actualizadas"
    aChequeos(67).Clase = "Vistas"
    aChequeos(68).Nombre = "Detalles_No_Catalogos"
    aChequeos(68).Clase = "Vistas"
    ' Adds for french version
    aChequeos(71).Nombre = "Locked_Views"
    aChequeos(71).Clase = "Vistas"
    aChequeos(72).Nombre = "Fake_Dimensions"
    aChequeos(72).Clase = "Vistas"


    'Chequeos para PRODUCT / PART
        'Estructura
    aChequeos(101).Nombre = "Estructura_Product"
    aChequeos(101).Clase = "Estructura"
    aChequeos(102).Nombre = "Constraints"
    aChequeos(102).Clase = "Estructura"
    aChequeos(104).Nombre = "PRAV"
    aChequeos(104).Clase = "Estructura"
    aChequeos(118).Nombre = "Activate_Node"
    aChequeos(118).Clase = "Estructura"
    aChequeos(105).Nombre = "Ordenacion"
    aChequeos(105).Clase = "Estructura"

        'NOMUTIL
    aChequeos(103).Nombre = "Coherencia"
    aChequeos(103).Clase = "NOMUTIL"
    aChequeos(106).Nombre = "Instance_Description"
    aChequeos(106).Clase = "NOMUTIL"
    aChequeos(111).Nombre = "Elementos_Tipicos"
    aChequeos(111).Clase = "NOMUTIL"
    aChequeos(117).Nombre = "Properties"
    aChequeos(117).Clase = "NOMUTIL"

        'Links
    aChequeos(107).Nombre = "Links_NCU"
    aChequeos(107).Clase = "Links"
    aChequeos(108).Nombre = "Links_Rotos"
    aChequeos(108).Clase = "Links"
    aChequeos(109).Nombre = "Links_PRAV"
    aChequeos(109).Clase = "Links"

        'CATPart
    aChequeos(110).Nombre = "CATPart_Update"
    aChequeos(110).Clase = "CATPart"
    aChequeos(112).Nombre = "CATPart_SketchesVacios"
    aChequeos(112).Clase = "CATPart"
    aChequeos(113).Nombre = "CATPart_Links"
    aChequeos(113).Clase = "CATPart"
    aChequeos(114).Nombre = "CATPart_UnBody"
    aChequeos(114).Clase = "CATPart"
    aChequeos(115).Nombre = "CATPart_NoV4"
    aChequeos(115).Clase = "CATPart"
    aChequeos(116).Nombre = "CATPart_Unused"
    aChequeos(116).Clase = "CATPart"
    ' Adds for french version
    aChequeos(121).Nombre = "CATPart_noHybridBody"
    aChequeos(121).Clase = "CATPart"
    aChequeos(122).Nombre = "CATPart_Layer"
    aChequeos(122).Clase = "CATPart"


End Sub

Sub Inicializar_Documentos(oDocumentos As cDocumentos)
'*************************************************
'*  SUB que inicializa la coleccion de
'*  documentos
'*
'*  Escrita por: Gervid 23-feb-2004
'*  Revisada por:Gervid 23-feb-2004
'*************************************************
    'Destruye el objeto actual
    Set oDocumentos = Nothing
    'Crea un nuevo objeto
    Set oDocumentos = New cDocumentos

End Sub


Private Sub Inicializar_Chequeos_Asignaciones(aTablaAsignaciones() As String)
'*************************************************
'*  SUB que inicializa la tabla de asignaciones de
'*  chequeos
'*
'*  Escrita por: La macro que escribe macros 14 de mayo de 2006
'*  Revisada por: No hace falta :P           14 de mayo de 2006
'*************************************************

    Dim nbSets As Integer
    
    nbSets = 151   ' 137 + french adds
    
    'Inicializacion de la Tabla
    ReDim aTablaAsignaciones(3, nbSets + 1)

    aTablaAsignaciones(0, 1) = "DRAWING"
    aTablaAsignaciones(3, 1) = "1"          ' Catia version
    ' commented for french version
    'aTablaAsignaciones(0, 2) = "DRAWING"
    'aTablaAsignaciones(3, 2) = "2"         ' ROA path
    'aTablaAsignaciones(0, 3) = "DRAWING"
    'aTablaAsignaciones(3, 3) = "3"         ' Inicio modelo
    'aTablaAsignaciones(0, 4) = "DRAWING"
    'aTablaAsignaciones(3, 4) = "4"         ' fecha catalog
    'aTablaAsignaciones(0, 5) = "DRAWING"
    'aTablaAsignaciones(3, 5) = "5"         ' DLNames
    'aTablaAsignaciones(0, 6) = "DRAWING"
    'aTablaAsignaciones(3, 6) = "6"         ' normativas
    aTablaAsignaciones(0, 7) = "DRAWING"
    aTablaAsignaciones(3, 7) = "21"         ' name
    aTablaAsignaciones(0, 8) = "DRAWING"
    aTablaAsignaciones(3, 8) = "22"         ' size
    aTablaAsignaciones(0, 9) = "DRAWING"
    aTablaAsignaciones(3, 9) = "51"         ' one sheet
    'aTablaAsignaciones(0, 10) = "DRAWING"
    'aTablaAsignaciones(3, 10) = "52"
    'aTablaAsignaciones(0, 11) = "DRAWING"
    'aTablaAsignaciones(3, 11) = "53"
    'aTablaAsignaciones(0, 12) = "DRAWING"
    'aTablaAsignaciones(3, 12) = "54"
    aTablaAsignaciones(0, 13) = "DRAWING"
    aTablaAsignaciones(3, 13) = "55"        ' empty sheets
    aTablaAsignaciones(0, 14) = "DRAWING"
    aTablaAsignaciones(3, 14) = "56"        ' empty views
    aTablaAsignaciones(0, 15) = "DRAWING"
    aTablaAsignaciones(3, 15) = "57"        ' empty details
    'aTablaAsignaciones(0, 16) = "DRAWING"
    'aTablaAsignaciones(3, 16) = "60"
    'aTablaAsignaciones(0, 17) = "DRAWING"
    'aTablaAsignaciones(3, 17) = "62"
    aTablaAsignaciones(0, 18) = "DRAWING"
    aTablaAsignaciones(3, 18) = "63"        ' Nested details
    aTablaAsignaciones(0, 19) = "DRAWING"
    aTablaAsignaciones(3, 19) = "64"        ' Save in WV
    'aTablaAsignaciones(0, 20) = "DRAWING"
    'aTablaAsignaciones(3, 20) = "65"
    aTablaAsignaciones(0, 21) = "DRAWING"
    aTablaAsignaciones(3, 21) = "66"        ' Unused details
    'aTablaAsignaciones(0, 22) = "DRAWING"
    'aTablaAsignaciones(3, 22) = "68"
    'aTablaAsignaciones(0, 23) = "DRAWING"
    'aTablaAsignaciones(3, 23) = "69"
    ' Adds for french version
    aTablaAsignaciones(0, 138) = "DRAWING"
    aTablaAsignaciones(3, 138) = "31"      ' Units
    aTablaAsignaciones(0, 139) = "DRAWING"
    aTablaAsignaciones(3, 139) = "71"      ' Locked views
    aTablaAsignaciones(0, 140) = "DRAWING"
    aTablaAsignaciones(3, 140) = "72"      ' Fake dimensions
    
    aTablaAsignaciones(0, 24) = "PRODUCT"
    aTablaAsignaciones(1, 24) = "Normal"
    aTablaAsignaciones(2, 24) = "Util"
    aTablaAsignaciones(3, 24) = "1"         ' Catia version
    'aTablaAsignaciones(0, 25) = "PRODUCT"
    'aTablaAsignaciones(1, 25) = "Normal"
    'aTablaAsignaciones(2, 25) = "Util"
    'aTablaAsignaciones(3, 25) = "2"
    'aTablaAsignaciones(0, 26) = "PRODUCT"
    'aTablaAsignaciones(1, 26) = "Normal"
    'aTablaAsignaciones(2, 26) = "Util"
    'aTablaAsignaciones(3, 26) = "3"
    'aTablaAsignaciones(0, 27) = "PRODUCT"
    'aTablaAsignaciones(1, 27) = "Normal"
    'aTablaAsignaciones(2, 27) = "Util"
    'aTablaAsignaciones(3, 27) = "4"
    'aTablaAsignaciones(0, 28) = "PRODUCT"
    'aTablaAsignaciones(1, 28) = "Normal"
    'aTablaAsignaciones(2, 28) = "Util"
    'aTablaAsignaciones(3, 28) = "5"
    'aTablaAsignaciones(0, 29) = "PRODUCT"
    'aTablaAsignaciones(1, 29) = "Normal"
    'aTablaAsignaciones(2, 29) = "Util"
    'aTablaAsignaciones(3, 29) = "6"
    aTablaAsignaciones(0, 30) = "PRODUCT"
    aTablaAsignaciones(1, 30) = "Normal"
    aTablaAsignaciones(2, 30) = "Util"
    aTablaAsignaciones(3, 30) = "21"        ' name
    aTablaAsignaciones(0, 31) = "PRODUCT"
    aTablaAsignaciones(1, 31) = "Normal"
    aTablaAsignaciones(2, 31) = "Util"
    aTablaAsignaciones(3, 31) = "22"        ' size
    aTablaAsignaciones(0, 32) = "PRODUCT"
    aTablaAsignaciones(1, 32) = "Normal"
    aTablaAsignaciones(2, 32) = "Util"
    aTablaAsignaciones(3, 32) = "102"       ' constraints
    'aTablaAsignaciones(0, 33) = "PRODUCT"
    'aTablaAsignaciones(1, 33) = "Normal"
    'aTablaAsignaciones(2, 33) = "Util"
    'aTablaAsignaciones(3, 33) = "105"
    'aTablaAsignaciones(0, 34) = "PRODUCT"
    'aTablaAsignaciones(1, 34) = "Normal"
    'aTablaAsignaciones(2, 34) = "Util"
    'aTablaAsignaciones(3, 34) = "107"
    aTablaAsignaciones(0, 35) = "PRODUCT"
    aTablaAsignaciones(1, 35) = "Normal"
    aTablaAsignaciones(2, 35) = "Util"
    aTablaAsignaciones(3, 35) = "108"       ' Broken links
    ' Adds for french version
    aTablaAsignaciones(0, 141) = "PRODUCT"
    aTablaAsignaciones(1, 141) = "Normal"
    aTablaAsignaciones(2, 141) = "Util"
    aTablaAsignaciones(3, 141) = "31"      ' Units
    aTablaAsignaciones(0, 142) = "PRODUCT"
    aTablaAsignaciones(1, 142) = "Normal"
    aTablaAsignaciones(2, 142) = "Util"
    aTablaAsignaciones(3, 142) = "32"      ' FileName
    aTablaAsignaciones(0, 143) = "PRODUCT"
    aTablaAsignaciones(1, 143) = "Normal"
    aTablaAsignaciones(2, 143) = "Util"
    aTablaAsignaciones(3, 143) = "33"      ' InstanceName
    
    aTablaAsignaciones(0, 36) = "PRODUCT"
    aTablaAsignaciones(1, 36) = "Normal"
    aTablaAsignaciones(2, 36) = "Grupo"
    aTablaAsignaciones(3, 36) = "1"         ' Catia version
    'aTablaAsignaciones(0, 37) = "PRODUCT"
    'aTablaAsignaciones(1, 37) = "Normal"
    'aTablaAsignaciones(2, 37) = "Grupo"
    'aTablaAsignaciones(3, 37) = "2"        ' ROA path
    'aTablaAsignaciones(0, 38) = "PRODUCT"
    'aTablaAsignaciones(1, 38) = "Normal"
    'aTablaAsignaciones(2, 38) = "Grupo"
    'aTablaAsignaciones(3, 38) = "3"        ' inicio modelo
    'aTablaAsignaciones(0, 39) = "PRODUCT"
    'aTablaAsignaciones(1, 39) = "Normal"
    'aTablaAsignaciones(2, 39) = "Grupo"
    'aTablaAsignaciones(3, 39) = "4"        ' fecha catalog
    'aTablaAsignaciones(0, 40) = "PRODUCT"
    'aTablaAsignaciones(1, 40) = "Normal"
    'aTablaAsignaciones(2, 40) = "Grupo"
    'aTablaAsignaciones(3, 40) = "5"        ' DLNames
    'aTablaAsignaciones(0, 41) = "PRODUCT"
    'aTablaAsignaciones(1, 41) = "Normal"
    'aTablaAsignaciones(2, 41) = "Grupo"
    'aTablaAsignaciones(3, 41) = "6"        ' Normativas
    aTablaAsignaciones(0, 42) = "PRODUCT"
    aTablaAsignaciones(1, 42) = "Normal"
    aTablaAsignaciones(2, 42) = "Grupo"
    aTablaAsignaciones(3, 42) = "21"        ' name
    aTablaAsignaciones(0, 43) = "PRODUCT"
    aTablaAsignaciones(1, 43) = "Normal"
    aTablaAsignaciones(2, 43) = "Grupo"
    aTablaAsignaciones(3, 43) = "22"        ' size
    aTablaAsignaciones(0, 44) = "PRODUCT"
    aTablaAsignaciones(1, 44) = "Normal"
    aTablaAsignaciones(2, 44) = "Grupo"
    aTablaAsignaciones(3, 44) = "102"       ' constraints
    'aTablaAsignaciones(0, 45) = "PRODUCT"
    'aTablaAsignaciones(1, 45) = "Normal"
    'aTablaAsignaciones(2, 45) = "Grupo"
    'aTablaAsignaciones(3, 45) = "103"      ' coherence
    'aTablaAsignaciones(0, 46) = "PRODUCT"
    'aTablaAsignaciones(1, 46) = "Normal"
    'aTablaAsignaciones(2, 46) = "Grupo"
    'aTablaAsignaciones(3, 46) = "105"      ' order
    'aTablaAsignaciones(0, 47) = "PRODUCT"
    'aTablaAsignaciones(1, 47) = "Normal"
    'aTablaAsignaciones(2, 47) = "Grupo"
    'aTablaAsignaciones(3, 47) = "107"      ' link NCU
    aTablaAsignaciones(0, 48) = "PRODUCT"
    aTablaAsignaciones(1, 48) = "Normal"
    aTablaAsignaciones(2, 48) = "Grupo"
    aTablaAsignaciones(3, 48) = "108"       ' Broken links
    ' Adds for french version
    'aTablaAsignaciones(0, 144) = "PRODUCT"
    'aTablaAsignaciones(1, 144) = "Normal"
    'aTablaAsignaciones(2, 144) = "Grupo"
    'aTablaAsignaciones(3, 144) = "31"      ' Units
    'aTablaAsignaciones(0, 145) = "PRODUCT"
    'aTablaAsignaciones(1, 145) = "Normal"
    'aTablaAsignaciones(2, 145) = "Grupo"
    'aTablaAsignaciones(3, 145) = "32"      ' FileName
    'aTablaAsignaciones(0, 146) = "PRODUCT"
    'aTablaAsignaciones(1, 146) = "Normal"
    'aTablaAsignaciones(2, 146) = "Grupo"
    'aTablaAsignaciones(3, 146) = "33"      ' InstanceName
    
    aTablaAsignaciones(0, 49) = "PRODUCT"
    aTablaAsignaciones(1, 49) = "Normal"
    aTablaAsignaciones(2, 49) = "Conjunto"
    aTablaAsignaciones(3, 49) = "1"
    'aTablaAsignaciones(0, 50) = "PRODUCT"
    'aTablaAsignaciones(1, 50) = "Normal"
    'aTablaAsignaciones(2, 50) = "Conjunto"
    'aTablaAsignaciones(3, 50) = "2"        ' ROA path
    'aTablaAsignaciones(0, 51) = "PRODUCT"
    'aTablaAsignaciones(1, 51) = "Normal"
    'aTablaAsignaciones(2, 51) = "Conjunto"
    'aTablaAsignaciones(3, 51) = "3"        ' inicio modelo
    'aTablaAsignaciones(0, 52) = "PRODUCT"
    'aTablaAsignaciones(1, 52) = "Normal"
    'aTablaAsignaciones(2, 52) = "Conjunto"
    'aTablaAsignaciones(3, 52) = "4"        ' fecha catalog
    'aTablaAsignaciones(0, 53) = "PRODUCT"
    'aTablaAsignaciones(1, 53) = "Normal"
    'aTablaAsignaciones(2, 53) = "Conjunto"
    'aTablaAsignaciones(3, 53) = "5"        ' DLNames
    'aTablaAsignaciones(0, 54) = "PRODUCT"
    'aTablaAsignaciones(1, 54) = "Normal"
    'aTablaAsignaciones(2, 54) = "Conjunto"
    'aTablaAsignaciones(3, 54) = "6"        ' Normativas
    aTablaAsignaciones(0, 55) = "PRODUCT"
    aTablaAsignaciones(1, 55) = "Normal"
    aTablaAsignaciones(2, 55) = "Conjunto"
    aTablaAsignaciones(3, 55) = "21"        ' name
    aTablaAsignaciones(0, 56) = "PRODUCT"
    aTablaAsignaciones(1, 56) = "Normal"
    aTablaAsignaciones(2, 56) = "Conjunto"
    aTablaAsignaciones(3, 56) = "22"        ' size
    aTablaAsignaciones(0, 57) = "PRODUCT"
    aTablaAsignaciones(1, 57) = "Normal"
    aTablaAsignaciones(2, 57) = "Conjunto"
    aTablaAsignaciones(3, 57) = "102"       ' constraints
    'aTablaAsignaciones(0, 58) = "PRODUCT"
    'aTablaAsignaciones(1, 58) = "Normal"
    'aTablaAsignaciones(2, 58) = "Conjunto"
    'aTablaAsignaciones(3, 58) = "103"      ' coherence
    'aTablaAsignaciones(0, 59) = "PRODUCT"
    'aTablaAsignaciones(1, 59) = "Normal"
    'aTablaAsignaciones(2, 59) = "Conjunto"
    'aTablaAsignaciones(3, 59) = "105"      ' order
    'aTablaAsignaciones(0, 60) = "PRODUCT"
    'aTablaAsignaciones(1, 60) = "Normal"
    'aTablaAsignaciones(2, 60) = "Conjunto"
    'aTablaAsignaciones(3, 60) = "106"      ' instance description
    'aTablaAsignaciones(0, 61) = "PRODUCT"
    'aTablaAsignaciones(1, 61) = "Normal"
    'aTablaAsignaciones(2, 61) = "Conjunto"
    'aTablaAsignaciones(3, 61) = "107"      ' link NCU
    aTablaAsignaciones(0, 62) = "PRODUCT"
    aTablaAsignaciones(1, 62) = "Normal"
    aTablaAsignaciones(2, 62) = "Conjunto"
    aTablaAsignaciones(3, 62) = "108"       ' Broken links
    'aTablaAsignaciones(0, 63) = "PRODUCT"
    'aTablaAsignaciones(1, 63) = "Normal"
    'aTablaAsignaciones(2, 63) = "Conjunto"
    'aTablaAsignaciones(3, 63) = "117"       ' properties
    ' Adds for french version
    'aTablaAsignaciones(0, 151) = "PRODUCT"
    'aTablaAsignaciones(1, 151) = "Normal"
    'aTablaAsignaciones(2, 151) = "Conjunto"
    'aTablaAsignaciones(3, 151) = "31"      ' Units
    'aTablaAsignaciones(0, 152) = "PRODUCT"
    'aTablaAsignaciones(1, 152) = "Normal"
    'aTablaAsignaciones(2, 152) = "Conjunto"
    'aTablaAsignaciones(3, 152) = "32"      ' FileName
    'aTablaAsignaciones(0, 153) = "PRODUCT"
    'aTablaAsignaciones(1, 153) = "Normal"
    'aTablaAsignaciones(2, 153) = "Conjunto"
    'aTablaAsignaciones(3, 153) = "33"      ' InstanceName
    
    aTablaAsignaciones(0, 64) = "PRODUCT"
    aTablaAsignaciones(1, 64) = "Pieza avion"
    aTablaAsignaciones(3, 64) = "1"         ' Catia version
    'aTablaAsignaciones(0, 65) = "PRODUCT"
    'aTablaAsignaciones(1, 65) = "Pieza avion"
    'aTablaAsignaciones(3, 65) = "2"        ' ROA path
    'aTablaAsignaciones(0, 66) = "PRODUCT"
    'aTablaAsignaciones(1, 66) = "Pieza avion"
    'aTablaAsignaciones(3, 66) = "3"        ' inicio modelo
    'aTablaAsignaciones(0, 67) = "PRODUCT"
    'aTablaAsignaciones(1, 67) = "Pieza avion"
    'aTablaAsignaciones(3, 67) = "4"        ' fecha catalog
    'aTablaAsignaciones(0, 68) = "PRODUCT"
    'aTablaAsignaciones(1, 68) = "Pieza avion"
    'aTablaAsignaciones(3, 68) = "5"        ' DLNames
    'aTablaAsignaciones(0, 69) = "PRODUCT"
    'aTablaAsignaciones(1, 69) = "Pieza avion"
    'aTablaAsignaciones(3, 69) = "6"        ' Normativas
    aTablaAsignaciones(0, 70) = "PRODUCT"
    aTablaAsignaciones(1, 70) = "Pieza avion"
    aTablaAsignaciones(3, 70) = "21"
    aTablaAsignaciones(0, 71) = "PRODUCT"
    aTablaAsignaciones(1, 71) = "Pieza avion"
    aTablaAsignaciones(3, 71) = "22"
    'aTablaAsignaciones(0, 72) = "PRODUCT"
    'aTablaAsignaciones(1, 72) = "Pieza avion"
    'aTablaAsignaciones(3, 72) = "103"      ' coherence
    'aTablaAsignaciones(0, 73) = "PRODUCT"
    'aTablaAsignaciones(1, 73) = "Pieza avion"
    'aTablaAsignaciones(3, 73) = "104"      ' PRAV
    'aTablaAsignaciones(0, 74) = "PRODUCT"
    'aTablaAsignaciones(1, 74) = "Pieza avion"
    'aTablaAsignaciones(3, 74) = "109"      ' link PRAV
    ' Adds for french version
    'aTablaAsignaciones(0, 154) = "PRODUCT"
    'aTablaAsignaciones(1, 154) = "Pieza avion"
    'aTablaAsignaciones(3, 154) = "31"      ' Units
    'aTablaAsignaciones(0, 155) = "PRODUCT"
    'aTablaAsignaciones(1, 155) = "Pieza avion"
    'aTablaAsignaciones(3, 155) = "32"      ' FileName
    'aTablaAsignaciones(0, 156) = "PRODUCT"
    'aTablaAsignaciones(1, 156) = "Pieza avion"
    'aTablaAsignaciones(3, 156) = "33"      ' InstanceName
       
    aTablaAsignaciones(0, 75) = "PRODUCT"
    aTablaAsignaciones(1, 75) = "Pieza util"
    aTablaAsignaciones(3, 75) = "1"
    'aTablaAsignaciones(0, 76) = "PRODUCT"
    'aTablaAsignaciones(1, 76) = "Pieza util"
    'aTablaAsignaciones(3, 76) = "2"        ' ROA path
    'aTablaAsignaciones(0, 77) = "PRODUCT"
    'aTablaAsignaciones(1, 77) = "Pieza util"
    'aTablaAsignaciones(3, 77) = "3"        ' inicio modelo
    'aTablaAsignaciones(0, 78) = "PRODUCT"
    'aTablaAsignaciones(1, 78) = "Pieza util"
    'aTablaAsignaciones(3, 78) = "4"        ' fecha catalog
    'aTablaAsignaciones(0, 79) = "PRODUCT"
    'aTablaAsignaciones(1, 79) = "Pieza util"
    'aTablaAsignaciones(3, 79) = "5"        ' DLNames
    'aTablaAsignaciones(0, 80) = "PRODUCT"
    'aTablaAsignaciones(1, 80) = "Pieza util"
    'aTablaAsignaciones(3, 80) = "6"        ' Normativas
    aTablaAsignaciones(0, 81) = "PRODUCT"
    aTablaAsignaciones(1, 81) = "Pieza util"
    aTablaAsignaciones(3, 81) = "21"        ' name
    aTablaAsignaciones(0, 82) = "PRODUCT"
    aTablaAsignaciones(1, 82) = "Pieza util"
    aTablaAsignaciones(3, 82) = "22"        ' size
    'aTablaAsignaciones(0, 83) = "PRODUCT"
    'aTablaAsignaciones(1, 83) = "Pieza util"
    'aTablaAsignaciones(3, 83) = "103"     ' coherence
    ' Adds for french version
    'aTablaAsignaciones(0, 157) = "PRODUCT"
    'aTablaAsignaciones(1, 157) = "Pieza util"
    'aTablaAsignaciones(3, 157) = "31"      ' Units
    'aTablaAsignaciones(0, 158) = "PRODUCT"
    'aTablaAsignaciones(1, 158) = "Pieza util"
    'aTablaAsignaciones(3, 158) = "32"      ' FileName
    'aTablaAsignaciones(0, 159) = "PRODUCT"
    'aTablaAsignaciones(1, 159) = "Pieza util"
    'aTablaAsignaciones(3, 159) = "33"      ' InstanceName
    
    
    aTablaAsignaciones(0, 84) = "PART"
    aTablaAsignaciones(1, 84) = "Normal"
    aTablaAsignaciones(3, 84) = "1"             ' Catia version
    'aTablaAsignaciones(0, 85) = "PART"
    'aTablaAsignaciones(1, 85) = "Normal"
    'aTablaAsignaciones(3, 85) = "2"        ' ROA path
    'aTablaAsignaciones(0, 86) = "PART"
    'aTablaAsignaciones(1, 86) = "Normal"
    'aTablaAsignaciones(3, 86) = "3"        ' inicio modelo
    'aTablaAsignaciones(0, 87) = "PART"
    'aTablaAsignaciones(1, 87) = "Normal"
    'aTablaAsignaciones(3, 87) = "4"        ' fecha catalog
    'aTablaAsignaciones(0, 88) = "PART"
    'aTablaAsignaciones(1, 88) = "Normal"
    'aTablaAsignaciones(3, 88) = "5"        ' DLNames
    'aTablaAsignaciones(0, 89) = "PART"
    'aTablaAsignaciones(1, 89) = "Normal"
    'aTablaAsignaciones(3, 89) = "6"        ' Normativas
    aTablaAsignaciones(0, 90) = "PART"
    aTablaAsignaciones(1, 90) = "Normal"
    aTablaAsignaciones(3, 90) = "21"            ' name
    aTablaAsignaciones(0, 91) = "PART"
    aTablaAsignaciones(1, 91) = "Normal"
    aTablaAsignaciones(3, 91) = "22"            ' size
    'aTablaAsignaciones(0, 92) = "PART"
    'aTablaAsignaciones(1, 92) = "Normal"
    'aTablaAsignaciones(3, 92) = "103"      ' coherence
    'aTablaAsignaciones(0, 93) = "PART"
    'aTablaAsignaciones(1, 93) = "Normal"
    'aTablaAsignaciones(3, 93) = "106"      ' ??
    aTablaAsignaciones(0, 94) = "PART"
    aTablaAsignaciones(1, 94) = "Normal"
    aTablaAsignaciones(3, 94) = "110"           ' Update
    'aTablaAsignaciones(0, 95) = "PART"
    'aTablaAsignaciones(1, 95) = "Normal"
    'aTablaAsignaciones(3, 95) = "111"          ' tipicos
    aTablaAsignaciones(0, 96) = "PART"
    aTablaAsignaciones(1, 96) = "Normal"
    aTablaAsignaciones(3, 96) = "114"           ' One body
    'aTablaAsignaciones(0, 97) = "PART"
    'aTablaAsignaciones(1, 97) = "Normal"
    'aTablaAsignaciones(3, 97) = "115"          ' V4
    'aTablaAsignaciones(0, 98) = "PART"
    'aTablaAsignaciones(1, 98) = "Normal"
    'aTablaAsignaciones(3, 98) = "117"          ' properties
    ' Adds for french version
    aTablaAsignaciones(0, 147) = "PART"
    aTablaAsignaciones(1, 147) = "Normal"
    aTablaAsignaciones(3, 147) = "31"      ' Units
    aTablaAsignaciones(0, 148) = "PART"
    aTablaAsignaciones(1, 148) = "Normal"
    aTablaAsignaciones(3, 148) = "32"      ' FileName
    aTablaAsignaciones(0, 149) = "PART"
    aTablaAsignaciones(1, 149) = "Normal"
    aTablaAsignaciones(3, 149) = "33"      ' InstanceName
    aTablaAsignaciones(0, 150) = "PART"
    aTablaAsignaciones(1, 150) = "Normal"
    aTablaAsignaciones(3, 150) = "121"      ' HybridBody
    aTablaAsignaciones(0, 151) = "PART"
    aTablaAsignaciones(1, 151) = "Normal"
    aTablaAsignaciones(3, 151) = "122"      ' Control Layer
    
    aTablaAsignaciones(0, 99) = "PART"
    aTablaAsignaciones(1, 99) = "NCU"
    aTablaAsignaciones(3, 99) = "1"           ' Catia version
    'aTablaAsignaciones(0, 100) = "PART"
    'aTablaAsignaciones(1, 100) = "NCU"
    'aTablaAsignaciones(3, 100) = "2"        ' ROA path
    'aTablaAsignaciones(0, 101) = "PART"
    'aTablaAsignaciones(1, 101) = "NCU"
    'aTablaAsignaciones(3, 101) = "3"        ' inicio modelo
    'aTablaAsignaciones(0, 102) = "PART"
    'aTablaAsignaciones(1, 102) = "NCU"
    'aTablaAsignaciones(3, 102) = "4"        ' fecha catalog
    'aTablaAsignaciones(0, 103) = "PART"
    'aTablaAsignaciones(1, 103) = "NCU"
    'aTablaAsignaciones(3, 103) = "5"        ' DLNames
    'aTablaAsignaciones(0, 104) = "PART"
    'aTablaAsignaciones(1, 104) = "NCU"
    'aTablaAsignaciones(3, 104) = "6"        ' Normes
    'aTablaAsignaciones(0, 105) = "PART"
    'aTablaAsignaciones(1, 105) = "NCU"
    'aTablaAsignaciones(3, 105) = "106"     ' ??
    
    aTablaAsignaciones(0, 106) = "PART"
    aTablaAsignaciones(1, 106) = "AMO"
    aTablaAsignaciones(3, 106) = "1"           ' Catia version
    'aTablaAsignaciones(0, 107) = "PART"
    'aTablaAsignaciones(1, 107) = "AMO"
    'aTablaAsignaciones(3, 107) = "2"        ' ROA path
    'aTablaAsignaciones(0, 108) = "PART"
    'aTablaAsignaciones(1, 108) = "AMO"
    'aTablaAsignaciones(3, 108) = "3"        ' inicio modelo
    'aTablaAsignaciones(0, 109) = "PART"
    'aTablaAsignaciones(1, 109) = "AMO"
    'aTablaAsignaciones(3, 109) = "4"        ' fecha catalog
    'aTablaAsignaciones(0, 110) = "PART"
    'aTablaAsignaciones(1, 110) = "AMO"
    'aTablaAsignaciones(3, 110) = "5"        ' DLNames
    'aTablaAsignaciones(0, 111) = "PART"
    'aTablaAsignaciones(1, 111) = "AMO"
    'aTablaAsignaciones(3, 111) = "6"        ' Normes


    aTablaAsignaciones(0, 112) = "PART"
    aTablaAsignaciones(1, 112) = "Auxiliar"
    aTablaAsignaciones(3, 112) = "1"
    'aTablaAsignaciones(0, 113) = "PART"
    'aTablaAsignaciones(1, 113) = "Auxiliar"
    'aTablaAsignaciones(3, 113) = "2"
    'aTablaAsignaciones(0, 114) = "PART"
    'aTablaAsignaciones(1, 114) = "Auxiliar"
    'aTablaAsignaciones(3, 114) = "3"
    'aTablaAsignaciones(0, 115) = "PART"
    'aTablaAsignaciones(1, 115) = "Auxiliar"
    'aTablaAsignaciones(3, 115) = "4"
    'aTablaAsignaciones(0, 116) = "PART"
    'aTablaAsignaciones(1, 116) = "Auxiliar"
    'aTablaAsignaciones(3, 116) = "5"
    'aTablaAsignaciones(0, 117) = "PART"
    'aTablaAsignaciones(1, 117) = "Auxiliar"
    'aTablaAsignaciones(3, 117) = "6"
    aTablaAsignaciones(0, 118) = "PART"
    aTablaAsignaciones(1, 118) = "Auxiliar"
    aTablaAsignaciones(3, 118) = "21"
    aTablaAsignaciones(0, 119) = "PART"
    aTablaAsignaciones(1, 119) = "Auxiliar"
    aTablaAsignaciones(3, 119) = "22"
    'aTablaAsignaciones(0, 120) = "PART"
    'aTablaAsignaciones(1, 120) = "Auxiliar"
    'aTablaAsignaciones(3, 120) = "103"
    'aTablaAsignaciones(0, 121) = "PART"
    'aTablaAsignaciones(1, 121) = "Auxiliar"
    'aTablaAsignaciones(3, 121) = "106"
    aTablaAsignaciones(0, 122) = "PART"
    aTablaAsignaciones(1, 122) = "Auxiliar"
    aTablaAsignaciones(3, 122) = "110"
    aTablaAsignaciones(0, 123) = "PART"
    aTablaAsignaciones(1, 123) = "Auxiliar"
    aTablaAsignaciones(3, 123) = "114"
    'aTablaAsignaciones(0, 124) = "PART"
    'aTablaAsignaciones(1, 124) = "Auxiliar"
    'aTablaAsignaciones(3, 124) = "115"
    aTablaAsignaciones(0, 125) = "PART"
    aTablaAsignaciones(1, 125) = "Laser"
    aTablaAsignaciones(3, 125) = "1"
    'aTablaAsignaciones(0, 126) = "PART"
    'aTablaAsignaciones(1, 126) = "Laser"
    'aTablaAsignaciones(3, 126) = "2"
    'aTablaAsignaciones(0, 127) = "PART"
    'aTablaAsignaciones(1, 127) = "Laser"
    'aTablaAsignaciones(3, 127) = "3"
    'aTablaAsignaciones(0, 128) = "PART"
    'aTablaAsignaciones(1, 128) = "Laser"
    'aTablaAsignaciones(3, 128) = "4"
    'aTablaAsignaciones(0, 129) = "PART"
    'aTablaAsignaciones(1, 129) = "Laser"
    'aTablaAsignaciones(3, 129) = "5"
    'aTablaAsignaciones(0, 130) = "PART"
    'aTablaAsignaciones(1, 130) = "Laser"
    'aTablaAsignaciones(3, 130) = "6"
    aTablaAsignaciones(0, 131) = "PART"
    aTablaAsignaciones(1, 131) = "Laser"
    aTablaAsignaciones(3, 131) = "21"
    aTablaAsignaciones(0, 132) = "PART"
    aTablaAsignaciones(1, 132) = "Laser"
    aTablaAsignaciones(3, 132) = "22"
    'aTablaAsignaciones(0, 133) = "PART"
    'aTablaAsignaciones(1, 133) = "Laser"
    'aTablaAsignaciones(3, 133) = "103"
    'aTablaAsignaciones(0, 134) = "PART"
    'aTablaAsignaciones(1, 134) = "Laser"
    'aTablaAsignaciones(3, 134) = "106"
    aTablaAsignaciones(0, 135) = "PART"
    aTablaAsignaciones(1, 135) = "Laser"
    aTablaAsignaciones(3, 135) = "110"
    aTablaAsignaciones(0, 136) = "PART"
    aTablaAsignaciones(1, 136) = "Laser"
    aTablaAsignaciones(3, 136) = "114"
    'aTablaAsignaciones(0, 137) = "PART"
    'aTablaAsignaciones(1, 137) = "Laser"
    'aTablaAsignaciones(3, 137) = "115"

End Sub

Private Sub Inicializar_Chequeos(oDocumentos As cDocumentos)
'*************************************************
'*  SUB que inicializa la matriz de
'*  chequeos
'*
'*  Escrita por: Gervid 27-ene-2004
'*  Revisada por:Gervid 27-ene-2004
'*************************************************
    Dim n As Integer
    Dim m As Integer
    Dim sTipo As String
    Dim sClase As String
    Dim sSubClase As String
    Dim aTablaAsignaciones() As String  'Tabla de asignaciones de chequeos
                                        'aTablaAsignaciones(3,n)
                                        'donde:
                                        '   aTablaAsignaciones(0,n) = [Tipo de documento]
                                        '   aTablaAsignaciones(1,n) = [Clase de documento]
                                        '   aTablaAsignaciones(2,n) = [SubClase de documento]
                                        '   aTablaAsignaciones(3,n) = [Codigo de Chequeo]
    
    
    'Inicializa la tabla de asignaciones
    Inicializar_Chequeos_Asignaciones aTablaAsignaciones
    ' MH a supprimer Init_Check_Sets aTablaAsignaciones
    
    'Rellena los documentos con sus chequeos correspondientes
    For n = 1 To oDocumentos.Count
        
        'Asigna los valores de Tipo, Clase y SubClase, para aplicar el chequeo correspondiente
        sTipo = oDocumentos.Item(n).Tipo
        Select Case UCase(sTipo)
            Case "DRAWING"
                sClase = ""
                sSubClase = ""
            
            Case "PRODUCT"
                sClase = oDocumentos.Item(n).ElementoArbol.Tipo
                sSubClase = oDocumentos.Item(n).ElementoArbol.TipoPieza
                
            Case "PART"
                sClase = oDocumentos.Item(n).ElementoArbol.Tipo
                sSubClase = ""
            
            Case Else
                sClase = ""
                sSubClase = ""
            
        End Select
        
        'Recorre la tabla de asignaciones, dando a cada documento los chequeos que le corresponden
        For m = 0 To UBound(aTablaAsignaciones, 2)
            
            'Si coinciden los tres elementos necesarios, se plantea el aadir ese chequeo
            If UCase(aTablaAsignaciones(0, m)) = UCase(sTipo) Then
                
                If UCase(aTablaAsignaciones(1, m)) = UCase(sClase) Then
                    
                    If UCase(aTablaAsignaciones(2, m)) = UCase(sSubClase) Then
                        
                        If Val(aTablaAsignaciones(3, m)) > 0 Then
                        
                            Select Case Val(aTablaAsignaciones(3, m))
                                Case 122
                                    If sPrograma = "LAYER" Or sPrograma = "GSE" Then
                                        oDocumentos.Item(n).Chequeos.Add Val(aTablaAsignaciones(3, m)), True, "NR"
                                    End If
                                Case Else
                                    oDocumentos.Item(n).Chequeos.Add Val(aTablaAsignaciones(3, m)), True, "NR"
                            End Select
                            
                        End If
                            
                    End If
                    
                End If
                
            End If
        
        Next 'm
    
    Next n
    
    'Para el primer documento, elimina el chequeo de coherencia !! ne doit jamais arriver en version fr
    If oDocumentos.Item(1).Chequeos.Count > 0 Then
        For n = 1 To oDocumentos.Item(1).Chequeos.Count
            If oDocumentos.Item(1).Chequeos.Item(n).Codigo = 103 Then
                oDocumentos.Item(1).Chequeos.Remove n
                Exit For
            End If
        Next 'n
    End If
    
    'Para el primer documento, elimina el chequeo de component description
    If oDocumentos.Item(1).Chequeos.Count > 0 Then
        For n = 1 To oDocumentos.Item(1).Chequeos.Count
            If oDocumentos.Item(1).Chequeos.Item(n).Codigo = 106 Then
                oDocumentos.Item(1).Chequeos.Remove n
                Exit For
            End If
        Next 'n
    End If
    
End Sub


Sub Resetear_Chequeos(oDocumentos As cDocumentos)
'*************************************************
'*  SUB que borra todos los resultados de los
'*  chequeos y los pone como NR
'*
'*  Escrita por: Gervid 03-feb-2004
'*  Revisada por:Gervid 03-feb-2004
'*************************************************
    Dim n As Integer
    Dim m As Integer
    
    For n = 1 To oDocumentos.Count
        For m = 1 To oDocumentos.Item(n).Chequeos.Count
            oDocumentos.Item(n).Chequeos.Item(m).Resultado = "NR"
        Next 'm
    Next 'n
    
End Sub

Sub Resetear_Errores(oDocumentos As cDocumentos)
'*************************************************
'*  SUB que borra todos los resultados de los
'*  errores y deja la coleccion vacia
'*
'*  Escrita por: Gervid 03-feb-2004
'*  Revisada por:Gervid 03-feb-2004
'*************************************************
    Dim n As Integer
    Dim m As Integer
    
    For n = 1 To oDocumentos.Count
        For m = 1 To oDocumentos.Item(n).Chequeos.Count
            Set oDocumentos.Item(n).Chequeos.Item(m).Errores = Nothing
            Set oDocumentos.Item(n).Chequeos.Item(m).Errores = New cErrores
        Next 'm
    Next 'n
    
End Sub

Private Sub Inicializar_Form_Borrar()
'*************************************************
'*  SUB que borra todos los labels de los chequeos
'*  de la Form Principal
'*
'*  Escrita por: Gervid 27-ene-2004
'*  Revisada por:Gervid 16-mar-2004
'*************************************************

    'Oculta, desactiva y borra todos los labels de los chequeos
    FormPrincipal.labCheq.Caption = ""
    FormPrincipal.labCheq.Enabled = True
    FormPrincipal.labCheq.Visible = True
    
End Sub

Private Sub Inicializar_Form_Inicializar()
'*************************************************
'*  SUB que inicializa algunos elementos de la Form
'*  como el combo de Idioma
'*
'*  Escrita por: Gervid 27-ene-2004
'*  Revisada por:Gervid 27-ene-2004
'*************************************************

    'Inicializa el estado de Extendida de la Form
    FormPrincipal.bExtendida = True
    
    'Inicializa el nombre de la Form
    FormPrincipal.Caption = Principal.APPLICATION_NAME & " v" & Principal.APPLICATION_VERSION ' & " (" & Principal.APPLICATION_DATE & ")"
    
    'Inicializa el idioma
    FormPrincipal.comboIdioma.Clear
    'FormPrincipal.comboIdioma.AddItem "Espaol"
    FormPrincipal.comboIdioma.AddItem "English"
    FormPrincipal.comboIdioma.AddItem "Franais"
    'FormPrincipal.comboIdioma.AddItem "Deutsch"
    Select Case sLanguage
        'Case "ESP"
            'FormPrincipal.comboIdioma.Text = FormPrincipal.comboIdioma.List(0)
            
        Case "ENG"
            FormPrincipal.comboIdioma.Text = FormPrincipal.comboIdioma.List(0)
            
        Case "FRA"
            FormPrincipal.comboIdioma.Text = FormPrincipal.comboIdioma.List(1)
        
        'Case "DEU"
        
    End Select
    
    'Si hay mas de un documento, activa el boton de Atras
    If Principal.oClaseDocumentos.Count = 1 Then
        FormPrincipal.botArchivos.Enabled = False
    Else
        FormPrincipal.botArchivos.Enabled = True
    End If
    
End Sub

Private Function Detectar_DocumentoActivo() As String
'*************************************************
'*  FUNCION que devuelve el tipo de documento
'*  que esta activo en CATIA
'*
'*  Escrita por: Gervid 23-ene-2004
'*  Revisada por:Gervid 23-ene-2004
'*************************************************

    Dim sNombre As String               'Nombre del documento activo
    Dim n As Integer                    'Contador
    

    'Si no hay ninguna ventana abierta en CATIA, devuelve "NINGUNO"
    If CATIA.Windows.Count = 0 Then
        
        Detectar_DocumentoActivo = "Ninguno"
    
    Else
        
        sNombre = CATIA.ActiveDocument.Name
        
        'Si no ha encontrado nada, el tipo es "Desconocido"
        Detectar_DocumentoActivo = C_Aux.Detecta_TipoDocumento(sNombre)
    
    End If

End Function

'***********************************************
'*  SUB analizes the drawing, search other
'*  drawings (same first 14 characters ) in the
'*  serie and store in the col oDocumentos
'*  french naming rule used.
'* Modification: only first 11 characters for GSE drawings
'* Modification: only first 10 characters for A350 drawings
'***********************************************

Sub Fill_Plans(oDocumentos As cDocumentos, sPlanoActivo As String, sRuta As String)
    Dim strRoot As String, DrawingStatus As String
    Dim CatiaFolder As Folder
    Dim CatiaFile As Object, OpenDoc As Object
    
On Error GoTo Depurar_Error
    
    strRoot = Left(sPlanoActivo, InStr(sPlanoActivo, ".") - 1)
    
    Select Case sPrograma

        Case "A350"
            If (IsAA350Name(strRoot, sTipoDoc)) Then
                'Store first 10 characters filename for A350 drawings
                strRoot = Left(sPlanoActivo, 10)
            Else
            
                If (Principal.sLanguage = "FRA") Then
                    MsgBox sPlanoActivo & " ne correspond pas aux rgles de nommage du profil ""A350""." & vbCrLf & _
                    "Ouvrez un CATDrawing appropri.", vbOKOnly + vbCritical, APPLICATION_NAME
                Else
                    MsgBox sPlanoActivo & " doesn't correspond to ""A350"" profile naming rules." & vbCrLf & _
                    "Open an appropriate CATDrawing.", vbOKOnly + vbCritical, APPLICATION_NAME
                End If
                
                bAbortar = True
                Exit Sub
                
            End If
            
        Case "GSE"
            If IsAGSE2dName(strRoot) Then
                'Store first 11 characters filename for GSE drawings
                strRoot = Left(sPlanoActivo, 11)
            Else
            
                If (Principal.sLanguage = "FRA") Then
                    MsgBox sPlanoActivo & " ne correspond pas aux rgles de nommage du profil ""GSE""." & vbCrLf & _
                    "Ouvrez un CATDrawing appropri.", vbOKOnly + vbCritical, APPLICATION_NAME
                Else
                    MsgBox sPlanoActivo & " doesn't correspond to ""GSE"" profile naming rules." & vbCrLf & _
                    "Open an appropriate CATDrawing.", vbOKOnly + vbCritical, APPLICATION_NAME
                End If
                
                bAbortar = True
                Exit Sub

            End If
        
        Case "OTRO"
            'Store first 14 characters filename for others drawings
            strRoot = Left(sPlanoActivo, 14)
        
    End Select
    
    Set CatiaFolder = CATIA.FileSystem.GetFolder(sRuta)
    
    'Search corresponding files in the current Directory
    For Each CatiaFile In CatiaFolder.Files
        'If the file is a CATDrawing
        If (CatiaFile.Type = "CATIA Drawing") Or (CatiaFile.Type = "Dessin CATIA") Then
            'If the first 11/14 characters are the same --> add to the collection
            If InStr(CatiaFile.Name, strRoot) = 1 Then
                'Check if document is open or close
                For Each OpenDoc In CATIA.Documents
                    If OpenDoc.Name = CatiaFile.Name Then
                        DrawingStatus = "ABIERTO"
                        'As soon as checked document is open, exit loop "for"
                        Exit For
                    Else
                        DrawingStatus = "CERRADO"
                    End If
                Next
                'add to the collection
                oDocumentos.Add CatiaFile.Name, sRuta, DrawingStatus, True
            End If
        End If
    Next
    
    Set CatiaFolder = Nothing

Exit Sub

Depurar_Error:
    Control_Error.Depurar_Error Err.Number, Err.Description, Principal.APPLICATION_NAME, "Fill_Plans"
    Err.Clear
    If Principal.DEBUG_MODE Then
        Stop
    End If
    Resume Next
End Sub



Sub Rellenar_Products(oDocumentos As cDocumentos, oArbol As c_Part_Product)
'***********************************************
'*  SUB que analiza el objeto del Product
'*  y archiva sus documentos en oDocumentos
'*
'*  Propiedades de oDocumentos:
'*  Nombre : Nombre del archivo
'*  Existe : Si existe o no ("SI" o "NO")
'*  Estado : Si esta abierto o cerrado en CATIA
'*  Ruta   : Ruta del archivo
'*
'*  Escrita por: Gervid 16-mar-2004
'*  Revisada por:
'***********************************************

Dim n As Integer


On Error GoTo Depurar_Error
    
    'Aade este nodo
    'Set oDocumentos.Add(oArbol.PartNumber, oArbol.Comunes.Ruta, "", True).ElementoArbol = oArbol
    Set oDocumentos.Add(oArbol.Comunes.Link_To_Reference, oArbol.Comunes.Ruta, "", True).ElementoArbol = oArbol
    
    'Aade los CATParts
    If oArbol.CATParts.Count > 0 Then
        For n = 1 To oArbol.CATParts.Count
            If oArbol.CATParts.Item(n).Mostrar_Usuario = "SI" Then
                Set oDocumentos.Add(oArbol.CATParts.Item(n).Comunes.Link_To_Reference, oArbol.CATParts.Item(n).Comunes.Ruta, " ", True).ElementoArbol _
                = oArbol.CATParts.Item(n)
            End If
        Next 'n
    End If
    
    'Aade los CATProducts
    If oArbol.Products.Count > 0 Then
        For n = 1 To oArbol.Products.Count
            Select Case oArbol.Products.Item(n).Mostrar_Usuario
            
                Case "SI"
                    'Set oDocumentos.Add(oArbol.Products.Item(n).Comunes.PartNumber, oArbol.Products.Item(n).Comunes.Ruta, , True).ElementoArbol _
                    '= oArbol.Products.Item(n)
                    Rellenar_Products oDocumentos, oArbol.Products.Item(n)
                
                Case "NODO"
                    Set oDocumentos.Add(oArbol.Products.Item(n).Comunes.Link_To_Reference, oArbol.Products.Item(n).Comunes.Ruta, , True).ElementoArbol _
                    = oArbol.Products.Item(n)
                    
            End Select
        Next 'n
    End If

Exit Sub

Depurar_Error:
    Control_Error.Depurar_Error Err.Number, Err.Description, "Principal", "Rellenar_Products"
    Err.Clear
    If Principal.DEBUG_MODE Then
        Stop
    End If
    Resume
End Sub

Private Sub Procesar_Product()
'*************************************************
'*  SUB que va a procesar un CATProduct
'*
'*  Escrita por: Gervid 27-ene-2004
'*  Revisada por: Gervid 27-ene-2004
'*************************************************
    
    Dim oPDoc As ProductDocument        'El product activo
    Dim oArbol As c_Part_Product        'El objeto oArbol
    
    Dim lX As Long
    Dim lY As Long
    
    Dim sTexto As String
    Dim n As Integer
        
    'Asignacion de objetos
    Set oPDoc = CATIA.ActiveDocument
    Set oArbol = New c_Part_Product
    oArbol.PartNumber = oPDoc.Product.PartNumber
    
    'Muestra form de esperar
    FormEspere.Show 0
    DoEvents
    
    'Procesa el Product, toma de datos
    ReDim C_Product_Arbol.aParametros(0)
    C_Product_Arbol.Procesar_Arbol oPDoc.Product, oArbol, oArbol.Proceso_Programa
    
    'Fill (Rellena) los archivos del product
    Rellenar_Products oClaseDocumentos, oArbol
    
    'Oculta la Form de esperar
    Unload FormEspere
    DoEvents
    
    'Debugueo, borrar
    If Principal.ADVDEBUG_MODE Then
        sTexto = ""
        For n = 1 To oClaseDocumentos.Count
            sTexto = sTexto & oClaseDocumentos.Item(n).Nombre & Chr(10)
        Next 'n
        MsgBox sTexto
    End If
        
    If Not bAbortar Then
    
        'Si hay mas de un archivo, da a elegir
        If C_Aux.Contar_Mostrar_Usuario(oArbol) > 1 Then
            bAbortar = True
            FormElegirArchivos_Product.Show 0
            FormElegirArchivos_Product.Inicializar oArbol
            FormElegirArchivos_Product.hide
            FormElegirArchivos_Product.Show 1
        End If
            
        'Si se ha dado a OK, continua la ejecucion
        If Not bAbortar Then
            'Inicializacion de chequeos
            Inicializar_Chequeos oClaseDocumentos
            
            'Inicializacin de la Form y Muestra
            FormPrincipal.Show 0
            Inicializar_Form_Inicializar
            FormPrincipal.Aplicar_Idioma sLanguage
            Inicializar_CATIA
        End If
    
    End If

End Sub

Private Sub Procesar_Drawing()
'*************************************************
'*  SUB que va a procesar un CATDrawing
'*
'*  Escrita por: Gervid 23-ene-2004
'*  Revisada por: Gervid 27-ene-2004
'*************************************************
    
    Dim oDDoc As DrawingDocument        'El plano activo
        
    'Asignacion de objetos
    Set oDDoc = CATIA.ActiveDocument
    
    'Detecta los planos de la serie
    'Rellenar_Planos oClaseDocumentos, oDDoc.Name, oDDoc.Path
    ' french version:
    Fill_Plans oClaseDocumentos, oDDoc.Name, oDDoc.Path
    
    If Not bAbortar Then
        'Si hay mas de un plano, da a elegir
        If oClaseDocumentos.Count > 1 Then
            bAbortar = True
            FormElegirArchivos_Drawing.Show 0
            FormElegirArchivos_Drawing.Inicializar oClaseDocumentos
            FormElegirArchivos_Drawing.hide
            FormElegirArchivos_Drawing.Show 1
        End If
        
        'Inicia la parte de chequeos
        If Not bAbortar Then
            'Inicializacion de chequeos
            Inicializar_Chequeos oClaseDocumentos
            
            'Inicializacin de la Form y Muestra
            FormPrincipal.Show 0
            Inicializar_Form_Inicializar
            FormPrincipal.Aplicar_Idioma sLanguage
            Inicializar_CATIA
        End If
    
    End If
    
End Sub

Private Sub Iniciar_Subprograma(sDocumento As String)
'*************************************************
'*  SUB que segun el documento especificado en
'*  sDocumento, inicia el subprograma adecuado
'*
'*  Escrita por: Gervid 23-ene-2004
'*  Revisada por:Gervid 23-ene-2004
'*************************************************

    Select Case UCase(sDocumento)
    
        Case "PRODUCT", "CATPRODUCT"
            
            bAbortar = False
            DoEvents
            'Procesa el Product
            Procesar_Product
            
        Case "DRAWING", "CATDRAWING"
            
            bAbortar = False
            DoEvents
            'Procesa el Product
            Procesar_Drawing
        
        Case "PART", "CATPART"
            'Muestra el cuestionario
            'bAbortar = False
            'FormCuestionario.Show 0
            'DoEvents
            ''Procesa el Product
            'Procesar_Product
        
        Case "DESCONOCIDO"
            MsgBox C_Idioma.FormPrincipal_Mensaje(2, sLanguage), vbOKOnly, APPLICATION_NAME
        
        Case "NINGUNO"
            MsgBox C_Idioma.FormPrincipal_Mensaje(1, sLanguage), vbOKOnly, APPLICATION_NAME
        
        Case Else
            MsgBox C_Idioma.FormPrincipal_Mensaje(2, sLanguage), vbOKOnly, APPLICATION_NAME
    
    End Select
    
End Sub

Private Sub Advertencias()
    
    FormAdvertencia.Show 1
    
    
    'If MsgBox("                                                        ADVERTENCIA" & Chr(10) & _
              'Chr(10) & _
              '"Se recuerda que todos los modelos deben estar salvados antes de ejecutar este programa." & Chr(10) & _
              '"                                                      Desea continuar?", vbYesNo + vbExclamation, Principal.NOMBRE_APLICACION) = vbNo Then
        'End
    'End If
'
    If (Comprobar_LoadReferencedDocuments <> 0) Then
        If MsgBox("L'option Load Referenced Documents doit tre ACTIVEE pour le bon fonctionnement de ce programme." & vbLf & _
                  "Cette option se trouve dans le menu Tools-->Options-->General." & vbLf & _
                  "Voulez-vous continuer l'excution du programme?", vbYesNo + vbInformation, Principal.APPLICATION_NAME) = vbNo Then
        'If MsgBox("Se recuerda que la opcion Load Referenced Documents debe estar ACTIVADA para el correcto funcionamiento de este programa." & vbLf & _
        '       "Esta opcion podra encontrarla en Tools-->Options-->General." & vbLf & _
        '       "Desea continuar la ejecucion del programa?", vbYesNo + vbInformation, Principal.APPLICATION_NAME) = vbNo Then
            End
        End If
    End If
    
End Sub


Sub CATMain()

    'Inicializa el idioma
    sLanguage = "FRA"
    
    'Inicializa el informe a KUKA, en principio se muestra, ya que todos los chequeos estarn seleciconados
    bInforme = True
    
    'Init FileSystem
    Inicializar_FileSystem
    
    'Detecta el tipo de documento activo
    sTipoDoc = Detectar_DocumentoActivo
    
    'Advertencias de inicio
    Advertencias
    
    'Selecciona el Programa
    frmChooseProgram.Show 1
    
    'Inicializa la coleccion de documentos
    Set oClaseDocumentos = New cDocumentos
    
    'Inicializa la tabla de Chequeos
    Inicializar_Tabla_Chequeos aClaseChequeos
    ' MH a supprimer Init_Checks_Table aClaseChequeos
        
    'Inicia el subprograma adecuado al tipo de documento activo
    Iniciar_Subprograma sTipoDoc

End Sub




